The ontology for claim adjudication
Eighteen modules over a shared foundation, covering the adjudication of a General Liability or Auto claim from First Notice of Loss to post-settlement closure, together with the two processes that run alongside it: fraud detection and straight-through processing.
The central finding — SME session, 2026-07-31The structured record says what was decided. The rationale for why — why coverage was reserved rather than denied, why the reserve is $1,000 and not $1,500, why the Guided Adjudication recommendation was rejected — exists only in the adjuster's file note.
An ontology that models only the structured layer inherits that blind spot. The decision-trace model is the part of this specification that closes it.
- Workers Compensation tables (
WC_*) - Underwriting, policy servicing, billing, reinsurance
- The physical schema of CCS 5 or the CDS refined layer — those are sources, mapped upward, never lifted
Layers and the eighteen modules
Each module answers a coherent cluster of competency questions and owns a coherent group of subject areas. Deliberately right-sized: not one blob, not a hundred shards. You never write into fnd/ or ins/ — mint in your own namespace and connect upward.
misc/competency · resource/ samples — consume everything, nothing imports them
evidence → adjudication → 15 concern modules → decision-trace
policy · claim · coverage · business
core · agreement · process ★ change request to IA · vendored skos org time prov dct
fnd/process/ does not exist yet. Claims, underwriting, policy servicing, billing and reinsurance all need the same shape: a case moves through states, driven by activities, gated by authority, producing artifacts. Until it lands, author against a shim at claims/process-shim/ (prefix pshim) with identical local names, and plan the migration as a MAJOR bump with dct:isReplacedBy on every shimmed term.{{ m.prefix }}:
{{ m.name }}
{{ m.ns }}
The import DAG
Every edge runs upward; no path may return to where it started. Data may point back — a decision trace may reference a coverage position without coverage-position importing decision-trace — but imports may not.
lia → itm. Liability apportionment references at-fault parties and, for Auto, vehicles and drivers. itm imports only core and claim, never reaching sideways into lia. A shared concept belongs one layer down — propose it for fnd/core, do not smuggle it sideways.stp → asg. STP routing produces queue assignments and system-generated tasks that asg already models, so asg must never import stp. STP's disposition governs which routing fires; the routing record itself is an asg term.Twenty-two subject areas, and where each lands
Every row of the Subject Areas — Use Case Map tab is assigned a home module. Nothing is dropped.
PERFORMER is described in the source as the strongest-validated entity in the ontology, confirmed across three independent data sources. Treat asg:Performer and the authority model as the anchor of the assignment module.
Six shapes — choose before you write
Run every candidate concept through one question first: is this a genuine kind of thing, or a thing in a state, a thing playing a role, a value it holds, a part of something, or one particular thing? Almost every modelling error in this domain is one of those wearing the mask of a class.
The role-reification triangle
Three parts: a role individual carrying core:roleProperty; the property the role realises; a role-filler class defined by a hasValue restriction on core:hasRole. Copy it exactly for every role.
asg:AdjusterRole a core:AgentRole ;
rdfs:label "Adjuster role"@en ;
core:roleProperty asg:adjuster ;
skos:definition "The role a social agent plays when assigned to handle a
claim or coverage line. Not a kind of person — a party may hold it,
relinquish it, and hold other roles simultaneously."@en .
asg:adjuster a owl:ObjectProperty ;
rdfs:label "adjuster"@en ;
schema:domainIncludes claim:Claim, cvp:CoverageLine ;
schema:rangeIncludes core:SocialAgent ;
rdfs:subPropertyOf core:isRelatedTo ;
owl:inverseOf asg:isAdjusterFor .
asg:Adjuster a owl:Class ;
rdfs:label "Adjuster"@en ;
rdfs:subClassOf core:SocialAgent ;
owl:equivalentClass [ a owl:Restriction ;
owl:onProperty core:hasRole ; owl:hasValue asg:AdjusterRole ] .
Every role gets the triangle
None of these is ⊑ core:Person. The same person may be a claimant on one claim and a witness on another; an adjuster may become a supervisor; a law firm may appear on both sides across different matters. agr:PartyRole where the role is a contract party, core:AgentRole otherwise.
Term inventory
No single concept left behind. Every concept named in the two workbooks appears exactly once, with its shape, IRI, module, definition, readiness flag and standard alignment.
{{ active.prefix }}:
{{ active.name }}
{{ active.ns }}
Classes
{{ classCount }}{{ c.term }}
⊑ {{ c.parent }}
Object properties
all with declared inversesDatatype properties
The decision trace
Which evidence was consulted at which gate, what was referenced from it, what was recorded as a result, and why — plus the AI recommendation, the human override and the audit finding.
{{ t.term }}
The unit: dtr:EvidenceUse
Exactly one row of the Decision Tracing template — a reified statement, n-ary, with a global IRI. Never a junction-table-shaped blank node, and never flattened to a datatype property.
res:evidence-use/CLM-1001/gate-3/police-report
a dtr:EvidenceUse ;
dtr:usedDocumentType doctype:PoliceReport ;
dtr:usageDisposition evduse:Used ;
dtr:informationReferenced "Narrative of the collision; cited party statements;
officer's assignment of fault."@en ;
dtr:informationRecorded "Liability posture and the basis for reserving rights
pending the recorded statement."@en ;
adjmeta:validationStatus adjmeta:DraftPendingSMEValidation .
res:decision-trace/CLM-1001/gate-3
a dtr:DecisionTrace ;
dtr:traceOf res:decision/CLM-1001/coverage-position ;
dtr:traceAtGate adj:CoveragePositionGate ;
dtr:hasEvidenceUse res:evidence-use/CLM-1001/gate-3/police-report ;
dtr:hasRationaleStatement [ a dtr:RationaleStatement ;
dtr:recordedIn res:file-note-text/FN-88421-1 ;
dtr:statementText "Rights reserved rather than denied because the
late-notice condition is contested."@en ;
dtr:extractionConfidence 0.82 ] .
adjstage:Investigation is a stage in a plan — one individual, shared by every claim. A stage execution is a prov:Activity — one per claim, with a start, an end, an agent and inputs. Confusing them makes "how long did investigation take on this claim?" unanswerable.evd:DocumentAnchor. Never dissolve a document into a hundred properties, and never leave a decision-bearing fact locked in prose.Guardrails
Unconstrained, a language model breaks an ontology in five characteristic ways. Each guardrail is not a style preference: violated, it produces a model that is wrong in a way a reasoner will faithfully propagate.
Where each rule belongs
Hard stops
Open questions and gaps
Nothing flagged as an open SME question may be silently resolved. Each is emitted with skos:editorialNote and adjmeta:openQuestion true, and listed in the conformance report.
{{ q.term }}
{{ q.owner }}
Not in the brief I received
The pasted specification was truncated partway through §5.7. Everything below is referenced by the parts I do have but its content was not included, so it is absent here rather than guessed at.